Computers have become an integral tool used in a wide variety of different applications, such as in finance and commercial transactions, computer-aided design and manufacturing, health-care, telecommunication, education, etc. Computers are finding new applications as a result of advances in hardware technology and rapid development in software technology. Furthermore, a computer system's functionality is dramatically enhanced by coupling stand-alone computers together to form a computer network. In a computer network, users may readily exchange files, share information stored on a common database, pool resources, and communicate via e-mail and via video teleconferencing.
One popular type of computer network is known as local area networks or LANs. LANs connect multiple computers together such that the users of the computers can access the same information and share data. Typically, in order to be connected to a LAN, a general purpose computer requires an expansion board generally known as a network interface card (NIC). Essentially, the NIC works with the operating system of the host computer to control the flow of information over the LAN. Some NICs may also be used to connect a computer to the Internet.
The NIC, like other hardware devices, requires a device driver which controls the physical functions of the NIC and coordinates data transfers between the card and the host operating system. An industry standard for interfacing between the device driver and the host operating system is known as the Network Device Interface Specification, or NDIS, which is developed by Microsoft Corporation of Redmond, Washington. The operating system layer implementing the NDIS interface is generally known as an NDIS wrapper. Functionally, the NDIS wrapper arbitrates the control of the device driver between various application programs and provides temporary storage for the data packets.
Currently, NDIS is implemented in many operating systems including Microsoft's Windows 95.TM.. According to the NDIS, when data packets arrive at the NIC, the network device driver will initiate a data transaction and will indicate to the host operating system that there are incoming data packets waiting to-be received. Usually, the host operating system will acknowledge the presence of the incoming data packets and will signal the network device driver to transfer the packets. When all the data packets have been transferred, the network device driver then signals the host operating system that the transaction is complete. In particular, an NdisMIndicateReceiveComplete routine is called at the end of the transaction. In some operating systems implementing NDIS, virtually any number of data packets may be transferred in one transaction.
However, in other operating systems, such as Windows 95.TM., data packets are sometimes ignored or dropped when the NIC attempts to transfer more than a certain number of incoming data packets to the host in one transaction. Any additional data packets will be ignored or dropped. As a result, it is necessary to re-transmit the ignored data packets across the network to the NIC until all the data packets are received and processed by the operating system. Retransmission of ignored or dropped data packets significantly increases network traffic and transmission latency. In addition, performance of new, high-speed, high performance network hardware is unexpectedly poor when used in conjunction with those operating systems.
Much effort has been expended to solve this problem. One solution is extensively to modify the existing operating systems to handle a larger number of data packets per transaction. However, that solution is not feasible as the costs of reverse engineering and modifying the existing operating systems are prohibitively expensive. Further, any modification to the existing operating systems may cause compatibility problems and may introduce other unforeseeable software glitches. Thus, what is needed is a method of an apparatus for preventing packet loss when data packets are transferred from an NIC to an operating system of a computer. The present invention offers a unique and novel solution whereby extensive modifications to the operating system are unnecessary. The solution offered by the present invention is also relatively inexpensive and may be implemented in many of today's network interface cards and operating systems.